# -*- coding: utf-8 -*-

'''
    作业一：
    为了统计学生人数，可以给Student类增加一个类属性，每创建一个实例，该属性自动增加：
    class Student(object):
    count = 0
    def __init__(self, name):
    self.name = name
'''
import threading


class Student(object):
    lock = threading.Lock()
    count = 0             # 学员数量统计
    Sid = []              # 学员id列表

    def __init__(self, sid, name, age, sex):
        self.id = sid     # id
        self.name = name  # 姓名
        self.age = age    # 年龄
        self.sex = sex    # 性别

        with Student.lock:
            Student.count += 1
            # Student.Sid.append(id(self))
            Student.Sid.append(self.id)
    # def __del__(self):
        # Student.count -= 1


S01 = Student('S01', '王大宝', '19', 'man')
S02 = Student('S02', '赵铁柱', '20', 'man')
S03 = Student('S03', '赵翠花', '17', 'woman')

# 打印学员数量和ID列表
print(
    '学员数量:{0:>10}'.format(Student.count),
    Student.Sid,
    sep='\n'
)

# 打印学员详细信息
print('\n{0:^50}'.format('学员详细信息列表'))
for i in Student.Sid:
    print(
        '*'*60,
        eval('{0}.{1}'.format(i, '__dict__')),
        sep='\n'
    )
